home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / com / computer / midi_com / sourcen / mc_drive.mid / read_me.txt < prev    next >
Encoding:
Text File  |  1993-12-19  |  6.2 KB  |  188 lines

  1. Beschreibung der Treiberstruktur fr MIDI-COM 3.92
  2.  
  3. Der vorliegende Treiber ist in 3 Ebenen aufgeteilt. Jede der Ebenen setzt 
  4. auf die darunerliegende auf.
  5.  
  6. Ebene 0:
  7. (DRV_ASS.S)
  8. a) liest und schreibt auf der Schnittstelle (Interruptebene):
  9. b) Installiert die Interruptfunktionen.
  10.  
  11. Ebene 1:
  12. liest und schreibt Blockweise
  13.  
  14. Ebene 2:
  15. Kontrolle des Netzes. (Token/Fehlerkorrektur/Erkennung von Verdopplungen ...)
  16.  
  17. Die oberste Ebene bietet Ihre Funktionen in einem COOKIE an. Der COOKIE wird 
  18. mit "MCTR" identifiziert.
  19.  
  20. Der COOKIE-Wert zeigt auf die folgende Struktur:
  21.  
  22. typedef struct 
  23. {
  24.     int        (*SENDE)(int an,int LEN,char *buff);
  25.     int        (*REPLY)(int LEN,char *buff);
  26.     ret_wert    (*LESE)(int *len,char *buff);
  27.     int        (*CMD)(int cmd,int *par1,int *par2);
  28.     char        *unused2;
  29. }io_port;
  30.  
  31. Beschreibung der Funktionen:
  32. ============================
  33.  
  34.         int    (*SENDE)(int an,int LEN,char *buff);
  35.  
  36. an:    Ein Bit-Muster, das die Empf„nger angibt. Es k”nnen auch mehr als 
  37.         ein Empf„nger fr eine Sendung angegeben werden.
  38.         Die Node-ID's mssen zwischen 0 und 6 liegen (s. CMD).
  39.         Ist BIT 0 gesetzt ist also der Rechner mit der Node-ID 0 der Empf„nger.
  40.         Ist BIT 1 gesetzt ist also der Rechner mit der Node-ID 1 der Empf„nger.
  41.         .....
  42. Ist BIT 7 gesetzt, ist eine Broadcast-Sendung vorgesehen.
  43. Broadcastsendungen werden an den Absender zurckgegeben, wenn alle Empf„nger 
  44. erreicht wurden. Im Gegensatz zu normalen Datenpaketen werden KEINE REPLY-
  45. Aufrufe von MIDI_COM durchgefhrt. Das heižt, eine normale Sendung 
  46. (==genau ein Empf„nger) wird immer durch MIDI_COM beantwortet, Broadcasts 
  47. nicht.
  48.  
  49. LEN    Die Paket-L„nge
  50.  
  51. *buff Zeiger auf die Daten, die verschickt werden sollen.
  52.  
  53. Return-Wert:  Wird zur Zeit noch nicht von MIDI_COM ausgewertet. 
  54.  
  55. Bei dieser Funktion erwartet MIDI_COM, das die Datenpakete MIT 
  56. SICHERHEIT den Empf„nger mindestens einmal erreichen.  Der Treiber muž 
  57. also dafr sorgen, das eine Sendung solange wiederholt wird, bis die 
  58. Nachricht eingetroffen ist.
  59.  
  60. -----------------------------------------------------------------------
  61.  
  62.         int    (*REPLY)(int LEN,char *buff);
  63.  
  64. LEN    Die Paket-L„nge
  65. *buff Zeiger auf die Daten, die verschickt werden sollen.
  66.  
  67. Dieser Aufruf erfolgt nach einem Datenempfang (siehe READER). Der Treiber 
  68. sollte also wissen, von woher das zuletzt empfangene Datenpaket kam. Erst 
  69. wenn ein REPLY empfangen wurde, ist der SENDER von der Pflicht entbunden, 
  70. seine Sendung zu wiederholen.
  71.  
  72. Return-Wert:  Wird zur Zeit noch nicht von MIDI_COM ausgewertet. 
  73.  
  74. -----------------------------------------------------------------------
  75.  
  76.         ret_wert    (*LESE)(int *len,char *buff);
  77.  
  78. *len        Paketl„nge
  79. *buff     zeiger auf die Daten
  80.  
  81. ret_wert ist ein Bit-Pattern.
  82. typedef struct
  83. {
  84.     int    frei:8;
  85.     int    erg:2;
  86.     int    doubl:1;
  87.     int    reply:1;
  88.     int    von:4;
  89. }r_wert;
  90.  
  91. von:    Die ersten 4 Bits (LSB) enthalten eine zahl zwischen 0 und 6, die 
  92.         angiebt, welcher Rechner der Urheber (Absender) der empfangenen 
  93.         Nachricht ist.
  94.  
  95. reply:    Boolean-Wert, der anzeigt ob es sich um eine Antwort auf eine 
  96.             gesendetes Datenpaket handelt (1) oder um ein Datenpaket von einem 
  97.             anderen Rechner (0). Zur Zeit wertet MIDI_COM noch haupts„chlich 
  98.             VON aus. Aber nicht immer.
  99.  
  100. doubl:    Boolean-Wert, der anzeigt, ob das empfangene Datenpaket schon 
  101.             einmal empfangen wurde. Die kann vorkommen, wenn ein REPLY nicht 
  102.             beim Empf„nger ankommt und dieser die letzte Anfrage wiederholt.
  103.  
  104. erg:        00:    Nachricht im Puffer vorhanden
  105.             01:    Keine Nachricht vorhanden.
  106.             11:    Der Treiber scheint keinen Anschluž mehr zu haben. Im Ring 
  107.                     ist dieser Timeout auf ca. 10 Sekunden eingestellt. Bei 
  108.                     dieser Rckmeldung sperrt MIDI_COM alle Operationen des 
  109.                     Netzwerks, bis wieder ein anderes "erg" geliefert wird.
  110.  
  111.  
  112. Die Funktion LESE wird durch MIDI_COM regelm„žig aufgerufen.
  113.  
  114. -----------------------------------------------------------------------
  115.  
  116.         int    (*CMD)(int cmd,int *par1,int *par2);
  117. Die Funktion CMD erlaubt es MIDI_COM, einige Abfragen vorzunehmen
  118. Bisher sind die folgenden Kommandos definiert:
  119.  
  120. #define  anmeldung    0
  121.  
  122.  CMD(anmeldung,NULL,NULL);
  123.  
  124. erster definierter Aufruf. MIDI_COM ist nun startbereit.
  125.  
  126. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  127.  
  128. #define    id_request    1
  129.  CMD(id_request,NULL,NULL);
  130.  
  131. liefert FAIL (-1) falls das Netz nicht betriebsbereit ist.
  132. liefert eine NODE-ID zwischen 0 und 6, die fr Adressierungen benutzt 
  133. werden kann.
  134.  
  135. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  136.  
  137. #define    new_appl        2
  138.  CMD(new_appl,NULL,NULL);
  139. liefert TRUE, falls seit der letzten Abfrage eine Neuinitialsierung 
  140. stattgefunden hat, FALSE sonst.
  141.  
  142. Abfrage, ob sich zwischenzeitlich eine neue NODE-Nummer im Netz angemeldet 
  143. hat. Dies ist immer dann der Fall, wenn ein Rechner im Netz neu gebootet 
  144. wurde.
  145.  
  146. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  147.  
  148. #define    err_bell        3
  149.     CMD(err_bell,&state,NULL);
  150.  
  151. state ist die Adresse einer INT-Variablen. Diese kann die folgenden Werte 
  152. annehmen.
  153. 0    :Anzeige der Netzt„tigkeit aus
  154. 1    :kleines Protokoll (bei dem beiliegenden Treiber werden Empfangsfehler 
  155.         der Hardware als Ausl”ser fr eine Anzeige verwendet.)
  156. 2    :volles Protokoll (bei dem beiliegenden Treiber wird jeder 
  157.         LESE-Aufruf als Ausl”ser fr eine Anzeige verwendet.)
  158.  
  159. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  160.  
  161. #define    stop            4
  162.     CMD(stop,&state,NULL);
  163.  
  164. Dieses Kommando soll, um die Rechner zu entlasten, den Netzbetrieb 
  165. stoppen. Es wird erwartet, das LESE auf allen Rechnern FAIL liefert, wenn 
  166. auf einem Rechner im Netz der Stop-Befehl gegeben wurde.
  167.  
  168. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  169.  
  170. #define    start            5
  171.     CMD(start,&state,NULL);
  172.  
  173. Dieses Kommando hebt den Stop-Befehl wieder auf
  174.  
  175.  
  176. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  177.  
  178. #define    storno        6
  179.     CMD(storno,NULL,NULL);
  180.  
  181. MIDI_COM kehrt normalerweise erst dann zum Aufrufenden Programm zurck, wenn 
  182. die gewnschte Funktion ausgefhrt wurde. Tritt allerdings in dieser Zeit 
  183. ein Timeout auf, kann MIDI_COM mit diesem Kommando den eventuell noch 
  184. aktiven Sendeauftrag wieder deakitvieren.
  185.  
  186. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  187.  
  188.